# 咱们来聊聊 Python 自带的数据类型哈！
print("欢迎大神莅临指导！")
# 在编程里，数据类型可是个很重要的概念。
# 变量可以存各种各样类型的数据，不同的类型能干不同的事儿。
# Python 默认就带了下面这些数据类型，分成了这几类：

# 文本类型：字符串 (str)
# 字符串就是用来表示文本的，像文字、句子啥的。
# 你可以用单引号、双引号或者三引号来创建字符串。
# 这是一个字符串变量，里面放着 "Hello World" 这段文本。
x = "Hello World"
# 用 type() 函数可以查变量类型，这行会告诉你 x 是字符串类型。
print(type(x))

# 数值类型：整数 (int), 浮点数 (float), 复数 (complex)
# Python 有三种数值类型，分别用来表示不同类型的数字：
# 整数 (int) 就是没有小数点的数字，可以是正的、负的或者零。
# 浮点数 (float) 就是带小数点的数字，用来表示小数。
# 复数 (complex) 可能平时不太常用，它表示复数，

x = 20  # 这是个整数变量，存的是整数 20。
x = 20.5 # 这是个浮点数变量，存的是 20.5 这个小数。
x = 1j # 这是个复数变量，存的是 1j，表示复数。

# 序列类型：列表 (list), 元组 (tuple), 范围 (range)
# 序列类型就是用来表示一组有序的数据。
# 列表 (list) 是个很常用的类型，它可以放很多东西，
# 而且里面的东西可以改，用方括号 [] 表示。
# 这是一个列表，里面放了三个水果的名字，都是字符串。
x = ["apple", "banana", "cherry"]
# 元组 (tuple) 跟列表差不多，但是里面的东西不能改，用圆括号 () 表示。
# 范围 (range) 类型用来生成一个数字序列，通常在循环里用。
# 这是一个元组，也放了三个水果名。
x = ("apple", "banana", "cherry")
# 这是一个 range 对象，表示 0 到 5 这几个数字的序列。
x = range(6)

# 映射类型：字典 (dict)
# 字典 (dict) 是一种键值对类型，就像我们查字典一样，通过键 (key) 来找值 (value)。
# 字典里的数据是无序的，用花括号 {} 表示。
x = {"name": "John", "age": 36}
# 这是一个字典，'name' 是键，'John' 是值，'age' 是键，36 是值。

# 集合类型：集合 (set), 冻结集合 (frozenset)
# 集合 (set) 就像数学里的集合，里面的元素是无序的，而且不会重复
# 用花括号 {} 或者 set() 函数创建。
# 冻结集合 (frozenset) 跟集合差不多，但是创建之后就不能修改了。
x = {"apple", "banana", "cherry"}
# 这是一个集合，放了三个水果名，注意集合里不会有重复元素。

# 这是一个冻结集合，内容和上面的集合一样，但是不能修改。
x = frozenset({"apple", "banana", "cherry"})

# 布尔类型：布尔值 (bool)
# 布尔类型 (bool) 只有两个值：True (真) 和 False (假)，用来表示真假。
# 在条件判断的时候经常会用到布尔类型。
x = True # 这是一个布尔变量，值是 True，表示真。

# 二进制类型：字节串 (bytes), 字节数组 (bytearray), 内存视图 (memoryview)
# 二进制类型是用来处理计算机里的二进制数据的。
# 字节串 (bytes) 是不可变的字节序列。
# 字节数组 (bytearray) 是可变的字节序列，就是说创建后还可以修改。
# 内存视图 (memoryview) 允许你直接访问对象在内存里的数据，而不用复制

x = b"Hello" # 这是一个 bytes 类型的变量，表示 "Hello" 的字节串形式。
x = bytearray(5) # 这是一个 bytearray 类型的变量，创建了一个长度为 5 的字节数组。
x = memoryview(bytes(5)) # 这是一个 memoryview 类型的变量，创建了一个字节串的内存视图。

# None 类型：NoneType
# NoneType 只有一个值，就是 None，它表示空值，或者说变量没有值。
# 通常用在函数没有返回值或者变量还没赋值的时候。
x = None  # 这是一个 NoneType 类型的变量，表示空值。

# 想要指定数据类型？可以用构造函数！
# 如果你想明确指定变量的数据类型，可以用 Python 提供的构造函数。
# 比如，str() 可以把值转成字符串，int() 转成整数，float() 转成浮点数，等等。
# 看看下面的例子：

x = str("Hello World")# 用 str() 构造函数创建字符串。
x = int(20)# 用 int() 构造函数创建整数。
x = float(20.5)# 用 float() 构造函数创建浮点数。
x = complex(1j)# 用 complex() 构造函数创建复数。
x = list(("apple", "banana", "cherry"))# 用 list() 构造函数创建列表。
x = tuple(("apple", "banana", "cherry"))# 用 tuple() 构造函数创建元组。
x = range(6)# 用 range() 构造函数创建 range 对象。
x = dict(name="John", age=36)# 用 dict() 构造函数创建字典。
x = set(("apple", "banana", "cherry"))# 用 set() 构造函数创建集合。
x = frozenset(("apple", "banana", "cherry"))# 用 frozenset() 构造函数创建冻结集合。
x = bool(5)# 用 bool() 构造函数创建布尔值，非零数字转成 True。
x = bytes(5)# 用 bytes() 构造函数创建字节串。
x = bytearray(5)# 用 bytearray() 构造函数创建字节数组。
x = memoryview(bytes(5))# 用 memoryview() 构造函数创建内存视图。

# 总结一下：
# Python 内置了超级多的数据类型，像文本、数字、序列、键值对、集合、真假、二进制还有空值都有。
# 掌握这些数据类型对学 Python 编程非常重要，你可以用 type() 函数随时查看变量的类型。
# 如果想明确指定类型，就用 str()、int()、list() 这些构造函数。
# 灵活运用这些数据类型，就能更好地组织和处理数据，写出更强大的 Python 程序啦！
# 最后谢谢大家的观看！喜欢的话对动动手点个赞呗！
print("谢谢观看，点个赞呗～")